#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "tcpmanager.h"
#include "singleton.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // //设置主界面为登录窗口
    // this->_login_dlg = new LoginDialog(this);
    // setCentralWidget(_login_dlg);

    // //将其登录窗口设置到 MainWindow 上，而不是作为独立窗口显示(但同时只能存在一个中心窗口，设置其他中心窗口后之前的会被释放)
    // _login_dlg->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
    // //注册按钮信号
    // connect(this->_login_dlg, &LoginDialog::switchRegister, this, &MainWindow::ShowRegisterWindow);

    // //忘记密码信号
    // connect(this->_login_dlg, &LoginDialog::switchReset, this, &MainWindow::ShowResetDialog);

    // // 链接服务器成功后跳转到聊天界面
    // connect(MagicSingleton<TcpManager>::GetInstance().get(), &TcpManager::sig_switch_chatdlg, this, &MainWindow::ShowChatDialog);
    ShowLoginDialog();
    _SetConnect();

    //临时测试添加
    emit MagicSingleton<TcpManager>::GetInstance()->sig_switch_chatdlg();
}

void MainWindow::_SetConnect()
{
    // 链接服务器成功后跳转到聊天界面
    connect(MagicSingleton<TcpManager>::GetInstance().get(), &TcpManager::sig_switch_chatdlg, this, &MainWindow::ShowChatDialog);
}

//显示注册窗口
void MainWindow::ShowRegisterWindow()
{
    this->_register_dlg = new RegisterDialog(this);

    _register_dlg->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);

    setCentralWidget(_register_dlg);
    _login_dlg->hide(); //隐藏
    this->_register_dlg->show();
    //返回登录按钮信号
    connect(this->_register_dlg, &RegisterDialog::sigSwitchLogin, this, &MainWindow::ShowLoginDialog);
}

void MainWindow::ShowLoginDialog()
{
    //设置主界面为登录窗口
    this->_login_dlg = new LoginDialog(this);
    setCentralWidget(_login_dlg);

    //将其登录窗口设置到 MainWindow 上，而不是作为独立窗口显示(但同时只能存在一个中心窗口，设置其他中心窗口后之前的会被释放)
    _login_dlg->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
    connect(this->_login_dlg, &LoginDialog::switchRegister, this, &MainWindow::ShowRegisterWindow);

    //忘记密码信号
    connect(this->_login_dlg, &LoginDialog::switchReset, this, &MainWindow::ShowResetDialog);
}

void MainWindow::ShowResetDialog()
{
    this->_reset_dlg = new ResetDialog(this);
    setCentralWidget(_reset_dlg);
    _reset_dlg->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
    _reset_dlg->show();
    //返回登录按钮信号
    connect(this->_reset_dlg, &ResetDialog::sigSwitchLogin, this, &MainWindow::ShowLoginDialog);
}

void MainWindow::ShowChatDialog()
{
    this->_chat_dlg = new ChatDialog(this);
    setCentralWidget(_chat_dlg);
    _chat_dlg->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
    _chat_dlg->show();
    this->setMinimumSize(1000, 600);
    this->setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
}

MainWindow::~MainWindow()
{
    delete ui;
}
